﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Flagwind.Data
{
	/// <summary>
	/// 表名称字段类型。Command内部使用
	/// </summary>
	public class TableNameField
	{
		/// <summary>
		/// 获取表名称
		/// </summary>
		public string Name
		{
			get
			{
				if(Entity == null)
				{
					return null;
				}
				return Entity.GetMappingName();
			}
		}

		/// <summary>
		/// 原始字段名
		/// </summary>
		public string Field;

		/// <summary>
		/// 关联的实体类
		/// </summary>
		public IEntity Entity;

		/// <summary>
		/// 在一系列字段使用中的索引号或者当前字段在实体类字段名字数组中的索引
		/// </summary>
		public int Index;

		/// <summary>
		/// 字段对应的值
		/// </summary>
		public object FieldValue;

		private string _sqlFieldName;

		/// <summary>
		/// 在ＳＱＬ语句中使用的字段名
		/// </summary>
		public string SqlFieldName
		{
			get
			{
				if(string.IsNullOrEmpty(_sqlFieldName))
				{
					return this.Field;
				}
				else
				{
					return _sqlFieldName;
				}
			}
			set
			{
				_sqlFieldName = value;
			}
		}
	}
}